#pragma once

#include <string>
#include <memory>
#include <cstddef>
#include "stream/IOpenable.h"

namespace stream {

class Data : public ::stream::IOpenable{
public:
	~Data() override {}

	virtual int append(const std::string & key, const std::string & value) = 0;
    virtual bool get(const std::string & key, std::string & value) = 0;
    virtual bool size(size_t & sz) const = 0;
	virtual void clear() = 0;
};

Data * makeData(const std::string & path);

}//end namespace stream
